iT邦幫忙

3

Javascript 進階 3-2 ASI 自動插入分號

  • 分享至 

  • xImage
  •  

https://ithelp.ithome.com.tw/upload/images/20191212/20121770BCDBJo58eR.jpg

本篇介紹的ASI的作用機制

ASI會自動在js的最後一段補上分號;

但這樣的機制有時候也並非是好事。

function callName () {
    return
    '叫我小明';
}
console.log(callName);

這樣的執行結果,會出現undefined。

因為ASI自動在return的後方加上了分號,所以程式碼只執行到return一個空的東西就結束。

另外還有

    if (1 > 10) a = 1
    else a = 2
    console.log(a)

這樣的執行結果沒有問題,a會等於2

但如果我們要變成同一行寫法的話就會出現語法錯誤

    if (1 > 10) a = 1 else a = 2 console.log(a)

所以結論就是,撰寫的時候還是自己加上分號比較好。

ASI 補充說明

“不會” 發生 ASI 的規則:

  1. 新的一行是 ([/ 開始 (容易出錯的地方)
var a = 1
var b = a
(a + b).toString()
 
(function() { })()
(function() { })()
 
var a = 1
var b = a
/test/.test(b)
  1. 新的一行以 +-*% 作開始 (會影響執行結果)
var a = 2
var b = a
+a
  1. 新的一行以 ,. 作開始 (需注意執行結果)
var a = 2
var b = a
.toString()
console.log(typeof b)
 
var a = 1
,b = 2 // b 一樣會 var 被宣告

因此,遇到以上的標點符號前方加入分號也是解決辦法

ex:

// 執行錯誤
(function() { })()
(function() { })()
 
// 正確
;(function() { })()
;(function() { })()

以上就是本篇的分享~汪汪


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言